import unittest

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.firefox.service import Service


class MyTestCaseFireFox(unittest.TestCase):
    driver = None

    @classmethod
    def setUpClass(cls) -> None:
        # 注册 驱动打开的位置
        service = Service(executable_path="../../dirver_exe/geckodriver.exe")
        # 打开浏览器  driver 代表 浏览器对象
        cls.driver = webdriver.Firefox(service=service)
        cls.driver.implicitly_wait(10)

    def test_iframe(self):
        """测试网页中的 内联框架  IFrame 的使用"""
        self.driver.get("http://192.168.0.152:8080/testhtml/workspaceHtml/iframeDemo.html")

        # 通过 LinkedText 来做元素定位
        # 因为 我现在操作的元素 在 一个 Iframe 的内联框架中，所以，我需要使用 Switch_to  来切换鼠标到 Iframe的内联框架中即可
        """
            在进行 切换内联框架时 有三种写法
            1、通过索引值
            2、通过 name 属性值
            3、通过元素定位
        """
        # self.driver.switch_to.frame(0)  # 内联框架的索引值 从  0开始
        # self.driver.switch_to.frame('w1') # 通过内联窗口的 name 属性值来切换框架
        self.driver.switch_to.frame(self.driver.find_element(By.NAME, "w1"))
        self.driver.find_element(By.LINK_TEXT, "test1").click()

        # 退回到 父窗口
        self.driver.switch_to.parent_frame()
        self.driver.switch_to.frame(self.driver.find_element(By.NAME, "w2"))
        self.driver.find_element(By.LINK_TEXT, "t1127").click()

    # @classmethod
    # def tearDownClass(cls) -> None:
    #     cls.driver.close()  # 只会关闭一个标签页
    #     # cls.driver.quit()  # 直接退出浏览器 并且关闭所有的标签页


if __name__ == '__main__':
    unittest.main()
